<?php
/**
 * Controlador del Técnico
 */
class TecnicosController extends Controller {
	/**
	 */
    public function listAction(){
		return json_encode(Tecnico::getAllWithGeo());
    }

	/**
	 * Listado de candidatos de la búsqueda de su campo nombre/apellidos.
	 * @param name Nombre/apellido a buscar en el listado de candidatos.
	 * @return Array de candidatos que cumplen con la búsqueda.
	 */
    public function searchAction($name) {
    	/*
    	echo $name;
    	if(isset($_REQUEST['search_provincia'])) {
			$provincia = $_REQUEST['search_provincia'];
			if(isset($_REQUEST['search_nota'])) {
				$nota = intval($_REQUEST['search_nota']);
				if($nota > 0) return json_encode(Tecnico::getByProvinciaAndNota($provincia, $nota));
			}
			//return json_encode(Tecnico::getByProvincia($provincia));
		}
		//return json_encode(Tecnico::getTecnico($name));

		//
		//search_provincia
		//search_nota
		//search_seleccion
		*/

		
		
		
		
		// Variables
		$provincias 	= $_REQUEST['search_provincia'];
		
		$estado 	= $_REQUEST['search_estado'];
		$nota 		= $_REQUEST['search_nota'];
		return json_encode(Tecnico::getByAll($name, $provincias, $estado, $nota));
    }
	
	/**
	 */
	public function viewAction($id) {
		echo json_encode(Tecnico::getByUidWithGeo($id));
	}
	
	/**
	 */
	public function formAction(){
		return $this->view->render('tecnicos/form');
	}
	
	/**
	 */
	public function seleccionaAction() {
		$uid = $_POST['uid'];
		$estado = $_POST['estado'];
		echo $sql = "UPDATE candidatos_geo SET estado = '{$estado}' WHERE uid = '{$uid}'";
		Tecnico::exec($sql);
	}

	/**
	 * Devuelve un listado de técnicos que operan en el radio de acción del punto dado (latitud, longitud).
	 */
	public function listByPositionAction($lat, $lng){
		return json_encode(Tecnico::getByPosition($lat, $lng));
	}

	/* TESTING */
	public function updategeoAction() {
	
		header('Content-Type: text/plain');
	
		foreach(Tecnico::getAllWithoutGeo() as $tecnico) {

			$direccion_completa = "{$tecnico->direccion} {$tecnico->codigo_postal} {$tecnico->poblacion} {$tecnico->provincia}";
			
			$query =  http_build_query(array(
				'address' => $direccion_completa,
				'sensor' => 'false',
				'region' => 'es'
			));
			
				
			$result = json_decode(file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?{$query}"));
		
			if($location = $result->results[0]->geometry->location) {
				$tecnico->setGeo($location->lat, $location->lng, $direccion_completa);
			} else {
				print_r($result);
			}
			@flush();
		}
	}
	
	public function updatenotaAction() {
	
		header('Content-Type: text/plain');
	
		foreach(Tecnico::getAllWithoutGeo() as $tecnico) {
			
			$nota = 0;
			
			if($tecnico->formacion_ce3) $nota += 1;
			if($tecnico->formacion_ce3x) $nota += 1;
			if($tecnico->formacion_calenervyp) $nota += 1;
			if($tecnico->formacion_ite) $nota += 1.5;
			if($tecnico->seguro) $nota += 1;
			if($tecnico->vehiculo_propio) $nota += 1;
			if($tecnico->camara_termografica) $nota += 1.5;
						
			$tecnico->setNota($nota);
		}
	}
	
	public function testAction() {
		echo json_encode(Tecnico::getAllBySeguro(1));
	}
	
	public function savePoblacionesAction() {
		$poblaciones = serialize($_REQUEST['poblaciones_check']);
		$candidato = $_REQUEST['candidato'];
		echo $sql = "UPDATE candidatos_geo SET poblaciones = '{$poblaciones}' WHERE uid = '{$candidato}';";
		Tecnico::exec($sql);
	}
	
	public function listAllByPositionAction(){
		$lat = $_REQUEST['lat'];
		$lng = $_REQUEST['lng'];
    	return json_encode(Tecnico::getAllByPosition($lat, $lng));
    }
	

	/**
	 * Establece el radio del técnico.
	 */
	public function setPosicionAction(){
		$uid 		= $_REQUEST['uid'];
		$latitud 	= $_REQUEST['latitud'];
		$longitud 	= $_REQUEST['longitud'];
		Tecnico::exec("UPDATE candidatos_geo SET latitud = '{$latitud}', longitud = '{$longitud}' WHERE uid = '{$uid}'");
    }

	/**
	 * Establece el radio del técnico.
	 */
	public function setRadioAction(){
		$uid = $_REQUEST['uid'];
		$radio = $_REQUEST['radio'];
		Tecnico::exec("UPDATE candidatos_geo SET radio = '{$radio}' WHERE uid = '{$uid}'");
    }

    /**
	 * Establece la puntuación del técnico.
	 */
	public function setPuntuacionAction(){
		$uid 	= $_REQUEST['uid'];
		$nota 	= $_REQUEST['nota'];
		Tecnico::exec("UPDATE candidatos_geo SET nota = '{$nota}' WHERE uid = '{$uid}'");
    }
}
?>
